/*******************************************************************************
** 文件名称：gm_utils.c
** 文件作用：通用工具宏和函数
** 编写作者：Tom Free 付瑞彪
** 编写时间：2020-08-06
** 文件备注：
**
** 更新记录：
**           2021-05-06 -> 创建文件
**                                                             <Tom Free 付瑞彪>
**
**           Copyright (c) 2018-2021 付瑞彪 All Rights Reserved
**
**       1 Tab == 4 Spaces     UTF-8     ANSI C Language(C99)
*******************************************************************************/

#include "gm_utils.h"

/* 计算数据的10进制位数 */
size_t gm_utils_get_num_cnt(uint32_t num)
{
    size_t i = 0;

    do
    {
        num /= 10;
        i++;
    } while (num != 0);

    return i;
}

/* 数组比对 */
bool gm_utils_array_cmp(uint8_t *arr1, uint8_t *arr2, size_t length)
{
    size_t i;

    for (i = 0; i < length; i++)
    {
        if (arr1[i] != arr2[i])
        {
            return false;
        }
    }

    return true;
}

/* 数组加法 */
uint8_t gm_utils_array_add(uint8_t *arr1, uint8_t *arr2, size_t length)
{
    size_t i;
    uint8_t sum, carry = 0;

    for (i = 0; i < length; i++)
    {
        /* 计算加法，带上了进位 */
        sum = arr1[length - 1 - i] + arr2[length - 1 - i] + carry;
        /* 计算尾数 */
        arr1[length - 1 - i] = sum % 10;
        /* 计算进位 */
        carry = sum / 10;
    }

    return carry;
}
